package com.cn.hibernate.dbpool.aop;

import javax.persistence.criteria.Order;

import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.core.Ordered;
import org.springframework.stereotype.Component;

import com.cn.hibernate.dbpool.DbContextHolder;
import com.cn.hibernate.dbpool.DynamicDataSource;
/**
 * 其实更多的是对于分库来说的用的，所以应该是分开的表，对于不同表的操作做不同的切面，这里只做测试
 * 连接点已经拿到了链接，所以这个用错了
 * @author Han
 */
@Aspect
@Component
public class DataSourceSwitch implements Ordered{
	
	
	@Before("execution(* com.cn.hibernate.dao.*.find*(..))")
	public void beforeGet(){
		DbContextHolder.setDBType(DbContextHolder.DATA_SOURCE_FROM);
	}
	
	@Before("execution(* com.cn.hibernate.dao.*.save*(..))")
	public void beforeSave(){
		DbContextHolder.setDBType(DbContextHolder.DATA_SOURCE_TO);
	}

	public int getOrder() {
		return -9999;
	}
}
